#include "CAbstractBase.h"
#include "CBaseImpl.h"

#define bind_3(func){((CBaseImpl*)impl)->##func = std::bind(&CAbstractBase::##func,this,\
 std::placeholders::_1,std::placeholders::_2,std::placeholders::_3);}

CAbstractBase::CAbstractBase()
	:impl{}
{
	impl = new CBaseImpl();
	bind_3(OnStatus);
}

CAbstractBase::~CAbstractBase()
{
	delete impl;
}
